package com.sa.token.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.util.Date;

import static com.baomidou.mybatisplus.annotation.FieldFill.INSERT;

/**
 * <p>
 * 操作记录表
 * </p>
 *
 * @author xhs
 * @since 2021-12-29
 */
@Data
@Builder
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@TableName(value = "sys_operation_log", autoResultMap = true)
public class SysOperationLogEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 系统模块
     */
    @TableField("system_module")
    private String systemModule;

    /**
     * 请求API接口
     */
    @TableField("request_api")
    private String requestApi;

    /**
     * 请求方式
     */
    @TableField("request_type")
    private String requestType;

    /**
     * 请求参数
     */
    @TableField("request_parame")
    private String requestParame;

    /**
     * 请求token
     */
    @TableField("request_token")
    private String requestToken;

    /**
     * 返回的状态码
     */
    @TableField("res_code")
    private Integer resCode;

    /**
     * 返回的信息描述
     */
    @TableField("res_msg")
    private String resMsg;

    /**
     * 返回的参数
     */
    @TableField("res_json")
    private String resJson;

    /**
     * 请求开始时间
     */
    @TableField(value = "start_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startTime;

    /**
     * 请求结束时间
     */
    @TableField(value = "end_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endTime;

    /**
     * 花费时间，单位ms
     */
    @TableField(value = "cost_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private int costTime;

    /**
     * 操作人
     */
    @TableField("creator")
    private String creator;

    /**
     * 操作人IP
     */
    @TableField("creator_ip")
    private String creatorIp;

    /**
     * 操作人地址
     */
    @TableField("creator_address")
    private String creatorAddress;

    /**
     * 创建日期
     */
    @TableField(value = "create_time", fill = INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

}
